/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controlacciones.ejb3.dao;

import controlacciones.ejb3.entity.TbArea;
import controlacciones.ejb3.entity.TbTipoAccion;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosAcciones;
import controlacciones.ejb3.entity.TbTipoAccionClasificacionAccionArea;
import controlacciones.ejb3.pojo.TableBeanBinding_Accion;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosAccionesAprobar;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosAdvanceMetas;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosClasificacionTipoAccionArea;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosDetalleTipoAccion;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosFactura;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosLecturas;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosReaperturas;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosValorizacionTipoAccion;
import controlacciones.ejb3.pojo.TableBeanBinding_ErrorResultado;
import controlacciones.ejb3.pojo.TableBeanBinding_Progcort;
import controlacciones.ejb3.pojo.TableBeanBinding_RESUL;
import controlacciones.ejb3.pojo.TableBeanBinding_TbMetas;
import helper.Utiles_Convertir;
import java.sql.SQLException;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author Vanessa Laura Velarde Silva
 */
@Stateless
public class BeanBindingDAOBean implements BeanBindingDAOLocal {

    

    public List<TableBeanBinding_ErrorResultado> getListaDatosErrorResultado( String log_user ) {
        List<TableBeanBinding_ErrorResultado> lista = null;
        List listTemp;
        String queryString = "SELECT      id_error, id_accion, num_inscri, " +
                " convert( char(10),fecha_registro,103) as fecha_registro, " +
                " cod_tipo_accion, error, log_user" +
                " FROM         tb_errores_resultado" +
                " where log_user = '"+ log_user +"' ";

        listTemp = em.createNativeQuery(queryString)
                .getResultList();
        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosErroresResultados(listTemp);
        return lista;
    }

    public List getListaDatosArchivoResultado( ) {
        List listTemp;
        String queryString = "exec spGenerarArchivoSici ";

        listTemp = em.createNativeQuery(queryString)
                .getResultList();
        return listTemp;
    }

    public List<TableBeanBinding_DatosAcciones> getListaDatosAccionesByMes( TbTipoAccionClasificacionAccionArea tipoAccion, String ano, String mes ) {
        List<TableBeanBinding_DatosAcciones> lista = null;
        List listTemp;
        String queryString = "SELECT     cast (tc.id_accion as varchar), tc.num_inscrip, tb_datos_cliente.nombre, tb_datos_cliente.direccion, tb_tipo_accion.descripcion, convert(char(10),ta.fecha_registro,103) as [Fecha Registro], convert(char(10),ta.fecha_envio,103) as [Fecha Envio] " +
                            "FROM         tb_datos_cliente INNER JOIN " +
                            "tb_cliente AS tc ON tb_datos_cliente.num_inscrip = tc.num_inscrip INNER JOIN " +
                            "tb_accion AS ta ON tc.id_accion = ta.id_accion INNER JOIN " +
                            "tb_tipo_accion ON ta.cod_tipo_accion = tb_tipo_accion.cod_tipo_accion " +
                            "WHERE     (ta.cod_area = '" + tipoAccion.getTbArea().getCodArea() + "') AND (ta.cod_tipo_accion = " + tipoAccion.getTbTipoAccion().getCodTipoAccion() + ") " +
                            "and datepart(month, fecha_registro) =" + mes;

        listTemp = em.createNativeQuery(queryString)
                .getResultList();
        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosAcciones(listTemp);
        return lista;
    }

    public List<TableBeanBinding_DatosAcciones> getAccion( String codAccion ) {
        List<TableBeanBinding_DatosAcciones> lista = null;
        List listTemp;
        String queryString = "SELECT     cast (tc.id_accion as varchar), tc.num_inscrip, tb_datos_cliente.nombre, tb_datos_cliente.direccion, tb_tipo_accion.descripcion, convert(char(10),ta.fecha_registro,103) as [Fecha Registro], convert(char(10),ta.fecha_envio,103) as [Fecha Envio] " +
                            "FROM         tb_datos_cliente INNER JOIN " +
                            "tb_cliente AS tc ON tb_datos_cliente.num_inscrip = tc.num_inscrip INNER JOIN " +
                            "tb_accion AS ta ON tc.id_accion = ta.id_accion INNER JOIN " +
                            "tb_tipo_accion ON ta.cod_tipo_accion = tb_tipo_accion.cod_tipo_accion " +
                            "WHERE ta.id_accion ='"+ codAccion +"'";

        listTemp = em.createNativeQuery(queryString)
                .getResultList();
        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosAcciones(listTemp);
        return lista;
    }

    public List<TableBeanBinding_DatosClasificacionTipoAccionArea> getListaClasificacionTipoAccionArea( TbTipoAccion tbTipoAccion  ) {
        List<TableBeanBinding_DatosClasificacionTipoAccionArea> lista = null;
        List listTemp;
        String queryString = "";
        if( tbTipoAccion == null ){
            queryString = "SELECT     tb_TipoAccion_ClasificacionAccion_Area.cod_clasificacion_accion, tb_clasificacion_accion.desripcion, tb_TipoAccion_ClasificacionAccion_Area.cod_tipo_accion, " +
                    " tb_tipo_accion.descripcion, tb_TipoAccion_ClasificacionAccion_Area.cod_area, tb_area.descripcion AS Expr1 " +
                    " FROM         tb_TipoAccion_ClasificacionAccion_Area INNER JOIN" +
                    " tb_area ON tb_TipoAccion_ClasificacionAccion_Area.cod_area = tb_area.cod_area INNER JOIN " +
                    " tb_tipo_accion ON tb_TipoAccion_ClasificacionAccion_Area.cod_tipo_accion = tb_tipo_accion.cod_tipo_accion INNER JOIN " +
                    " tb_clasificacion_accion ON tb_TipoAccion_ClasificacionAccion_Area.cod_clasificacion_accion = tb_clasificacion_accion.cod_clasificacion_accion";

        }else{
            queryString = "SELECT     tb_TipoAccion_ClasificacionAccion_Area.cod_clasificacion_accion, tb_clasificacion_accion.desripcion, tb_TipoAccion_ClasificacionAccion_Area.cod_tipo_accion, " +
                    " tb_tipo_accion.descripcion, tb_TipoAccion_ClasificacionAccion_Area.cod_area, tb_area.descripcion AS Expr1 " +
                    " FROM         tb_TipoAccion_ClasificacionAccion_Area INNER JOIN" +
                    " tb_area ON tb_TipoAccion_ClasificacionAccion_Area.cod_area = tb_area.cod_area INNER JOIN " +
                    " tb_tipo_accion ON tb_TipoAccion_ClasificacionAccion_Area.cod_tipo_accion = tb_tipo_accion.cod_tipo_accion INNER JOIN " +
                    " tb_clasificacion_accion ON tb_TipoAccion_ClasificacionAccion_Area.cod_clasificacion_accion = tb_clasificacion_accion.cod_clasificacion_accion" +
                    " where tb_TipoAccion_ClasificacionAccion_Area.cod_tipo_accion = "+ tbTipoAccion.getCodTipoAccion() ;
        }
          listTemp = em.createNativeQuery(queryString)
                .getResultList();
        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosClasificacionTipoAccionArea(listTemp);
        return lista;
    }

    public List<TableBeanBinding_DatosAccionesAprobar> getListaAccionesAprobar( String fechaInicio, String fechaFin ) {
        List<TableBeanBinding_DatosAccionesAprobar> lista = null;
        List listTemp;
        String queryString = "";
        queryString = "SELECT     tb_accion.id_accion, ISNULL(CONVERT(char(10), tb_accion.fecha_registro, 103), '') AS Expr1, " +
                " ISNULL(CONVERT(char(10), tb_accion.fecha_envio, 103), '') AS Expr2, ISNULL(CONVERT(char(10), tb_accion.fecha_atencion, 103), '') AS Expr3, " +
                " tb_accion.cantidad, ISNULL(tb_accion.cod_grupo_accion, '') AS Expr4, " +
                " tb_accion.cod_clasificacion_accion, tb_accion.cod_tipo_accion, tb_accion.cod_area, ISNULL(tb_accion.flag_aprobada, 0) AS Aprobada, " +
                " tb_cliente.num_inscrip, tb_datos_cliente.nombre AS Nombre, tb_datos_cliente.direccion AS Direccion " +
                " FROM         tb_datos_cliente INNER JOIN " +
                " tb_cliente ON tb_datos_cliente.num_inscrip = tb_cliente.num_inscrip RIGHT JOIN " +
                " tb_accion ON tb_cliente.id_accion = tb_accion.id_accion" +
                " where flag_iniciativa_externa = 1 and (convert(char(10),fecha_registro,103) " +
                " between  cast('"+ fechaInicio +"' as datetime) and  cast('"+ fechaFin +"' as datetime)) ";
          listTemp = em.createNativeQuery(queryString)
                .getResultList();
        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosAccionesAprobar(listTemp);
        return lista;
    }

     public List<TableBeanBinding_DatosReaperturas> getListaReaperturas( String fecha, String log_user ) {
        List<TableBeanBinding_DatosReaperturas> lista = null;
        List listTemp;
        String queryString = "";
        queryString = "SELECT     tb_Reapertura.id_reapertura, tb_Reapertura.inscrinro, tb_datos_cliente.nombre, " +
                " CONVERT(char(10), tb_Reapertura.fecha, 103) AS fecha, tb_Reapertura.sercod, tb_Reapertura.serdesc, " +
                " cod_tipo_accion, log_user, isnull(tb_Reapertura.flag_registrada,0)" +
                " FROM         tb_Reapertura INNER JOIN " +
                " tb_datos_cliente ON tb_datos_cliente.num_inscrip = tb_Reapertura.inscrinro " +
                " WHERE CONVERT(char(10), tb_Reapertura.fecha, 103) = '" + fecha + "'" +
                " ORDER BY tb_Reapertura.id_reapertura ";
          listTemp = em.createNativeQuery(queryString)
                .getResultList();
        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosReaperturas(listTemp);
        return lista;
    }

    public List<TableBeanBinding_TbMetas> getListaMetas( TbTipoAccion tbTipoAccion ) {
        List<TableBeanBinding_TbMetas> lista = null;
        List listTemp;
        String queryString = "";
        if( tbTipoAccion == null){
            queryString = "SELECT      tb_metas.ano, tb_metas.mes,tb_metas.valor, " +
                    " tb_metas.cod_tipo_accion,tb_tipo_accion.descripcion " +
                    " FROM         tb_metas INNER JOIN " +
                    " tb_tipo_accion ON tb_metas.cod_tipo_accion = tb_tipo_accion.cod_tipo_accion";
        }else{
            queryString = "SELECT      tb_metas.ano, tb_metas.mes,tb_metas.valor, " +
                    " tb_metas.cod_tipo_accion,tb_tipo_accion.descripcion " +
                    " FROM         tb_metas INNER JOIN " +
                    " tb_tipo_accion ON tb_metas.cod_tipo_accion = tb_tipo_accion.cod_tipo_accion " +
                    " where tb_tipo_accion.cod_tipo_accion = " + tbTipoAccion.getCodTipoAccion();
        }
        
          listTemp = em.createNativeQuery(queryString)
                .getResultList();
        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosMetas(listTemp);
        return lista;
    }

    public List<TableBeanBinding_DatosValorizacionTipoAccion> getListaValorizacionTipoAccion( String ano, String mes ) {
        List<TableBeanBinding_DatosValorizacionTipoAccion> lista = null;
        List listTemp;
        String queryString = "";

        queryString = "SELECT     tb_valorizacion.ano, tb_valorizacion.mes, tb_valorizacion.categoria, tb_TipoAccion_ClasificacionAccion_Area.cod_clasificacion_accion,	" +
                " tb_valorizacion.cod_tipo_accion, tb_tipo_accion.descripcion , " +
                " SUM(tb_valorizacion.monto) AS monto, SUM(tb_valorizacion.cantidad) AS [n_clientes], COUNT(tb_valorizacion.id_accion) AS [n_acciones]" +
                " FROM       tb_valorizacion INNER JOIN" +
                " tb_tipo_accion ON tb_valorizacion.cod_tipo_accion = tb_tipo_accion.cod_tipo_accion INNER JOIN " +
                " tb_TipoAccion_ClasificacionAccion_Area ON tb_tipo_accion.cod_tipo_accion = tb_TipoAccion_ClasificacionAccion_Area.cod_tipo_accion" +
                " WHERE     (tb_valorizacion.ano = '"+ ano +"') AND (tb_valorizacion.mes = '"+ mes +"')" +
                "GROUP BY tb_valorizacion.ano, tb_valorizacion.mes, tb_valorizacion.categoria, " +
                " tb_TipoAccion_ClasificacionAccion_Area.cod_clasificacion_accion," +
                " tb_valorizacion.cod_tipo_accion, tb_tipo_accion.descripcion" +
                " ORDER BY tb_valorizacion.categoria, tb_valorizacion.cod_tipo_accion";

          listTemp = em.createNativeQuery(queryString)
                .getResultList();
        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosValorizacionTipoAccion(listTemp);
        return lista;
    }

//    public List<TableBeanBinding_DatosLecturas> getListaLecturas( String fecha, int pagActual, int pagTamanno ) {
//        List<TableBeanBinding_DatosLecturas> lista = null;
//        List listTemp;
//        String queryString = "";
//        queryString = "SELECT     id_lectura, inscrinro,nombre,  codtipoaccion, medcodnro," +
//                " convert(char(10),medfacfec,103) as medfacfec, convert(char(10),medfecha,103) as medfecha, " +
//                " lecmed, lectant,convert(char(10),fecant,103) as fecant, promedio," +
//                " convert(char(10),fechactu,103) as fechactu , log_user, flag_registrada " +
//                " FROM         tb_lectura1" +
//                " WHERE     (CONVERT(char(10), medfacfec, 103) = '"+fecha+"')";
//
//         Query query = em.createNativeQuery(queryString);
//
//          listTemp =  query.setFirstResult(pagActual*pagTamanno)
//                                        .setMaxResults(pagTamanno)
//                                         .getResultList();
//
//        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosLecturas(listTemp);
//        return lista;
//    }

    public List<TableBeanBinding_Progcort> getListaCorte(  int pagActual, int pagTamanno ) {
        List<TableBeanBinding_Progcort> lista = null;
        List listTemp;
        String queryString = "SELECT     PREREGIOX, PREZONX, PRESECTOR, PREMZN, PRELOTE, PRESUBLOTE," +
                " NOMBRE, INSCRINRP, DIRECCION, CORNROPROG, CORNROLIN, CORSECUEN, " +
                " convert(char(10),CORFECELAB,103) as CORFECELAB, URBA, NROMEDIDO, MEDNROR " +
                " FROM         PROGCORT";

        Query query = em.createNativeQuery(queryString);

          listTemp =  query.setFirstResult(pagActual*pagTamanno)
                                        .setMaxResults(pagTamanno)
                                        .getResultList();

        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosCortes(listTemp);
        return lista;
    }

    public List<TableBeanBinding_DatosFactura> getListaFacturas( String fecha, String log_user, int pagActual, int pagTamanno ) {
        List<TableBeanBinding_DatosFactura> lista = null;
        List listTemp;
        String queryString = "";
        queryString = "SELECT     facsernro, facnro, CONVERT(char(10), facemifec, 103) AS facemifec, " +
                " CONVERT(char(10), facvenfec, 103) AS facvenfec, inscrinrx, nombre, id_factura, isnull(flag_registrada, 0) " +
                " FROM         tb_totfac AS t " +
                " WHERE     (CONVERT(char(10), facemifec, 103) = '"+ fecha+"')";
         Query query = em.createNativeQuery(queryString);

          listTemp =  query.setFirstResult(pagActual*pagTamanno)
                                        .setMaxResults(pagTamanno)
                                        .getResultList();

        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosFacturas(listTemp);
        return lista;
    }

    public List<TableBeanBinding_Accion> getListaDatosAcciones( TbArea area, String fecha, String codTipoAccion, String numInscri, int pagActual, int pagTamanno ) {
        List<TableBeanBinding_Accion> lista = null;
        List listTemp;
        String queryString = "";
        if( numInscri.trim().equals("") ){
//            queryString = "exec sp_verAcciones_Area_Fecha_TipoAccion_Cliente '"+area.getCodArea()+"','"+fecha+"', '"+codTipoAccion+"', '"+numInscri+"'" ;
            queryString = "SELECT     cast (tc.id_accion as varchar)as id_accion , tc.num_inscrip, tc.nombre, " +
                    "	tc.direccion, tb_tipo_accion.cod_tipo_accion ,tb_tipo_accion.descripcion, " +
                    "	convert(char(10),ta.fecha_registro,103) as [Fecha Registro], " +
                    "	ISNULL(convert(char(10),ta.fecha_envio,103),'') as [Fecha Envio]  ," +
                    "	convert(char(10),ta.fecha_atencion,103) as [Fecha Atencion]  ," +
                    "	ta.cantidad, ta.observacion_registro, flag_aprobada, flag_iniciativa_externa," +
                    "	flag_pagada, log_user, fecha_generacion, nro_prog_corte, flag_anulada, tb_area.descripcion as area" +
                    "	FROM          tb_accion ta INNER JOIN  " +
                    "	tb_cliente AS tc ON tc.id_accion = ta.id_accion INNER JOIN  " +
                    "	tb_tipo_accion ON ta.cod_tipo_accion = tb_tipo_accion.cod_tipo_accion  inner join" +
                    "	tb_area ON tb_area.cod_area =  ta.cod_area 	  " +
                    "	WHERE     (ta.cod_area = '"+ area.getCodArea() +"' )" +
                    "	and convert(char(10),ta.fecha_registro,103)  =  '"+ fecha +"'" +
                    "	and tb_tipo_accion.cod_tipo_accion = '" + codTipoAccion+ "' " +
                    "	ORDER BY convert(char(10),ta.fecha_registro,103), tc.nombre 	" ;
        }else{
            queryString = "SELECT     cast (tc.id_accion as varchar)as id_accion , tc.num_inscrip, tc.nombre, " +
                    "	tc.direccion, tb_tipo_accion.cod_tipo_accion ,tb_tipo_accion.descripcion, " +
                    "	convert(char(10),ta.fecha_registro,103) as [Fecha Registro], " +
                    "	ISNULL(convert(char(10),ta.fecha_envio,103),'') as [Fecha Envio]  ," +
                    "	convert(char(10),ta.fecha_atencion,103) as [Fecha Atencion]  ," +
                    "	ta.cantidad, ta.observacion_registro, flag_aprobada, flag_iniciativa_externa," +
                    "	flag_pagada, log_user, fecha_generacion, nro_prog_corte, flag_anulada, tb_area.descripcion as area" +
                    "	FROM          tb_accion ta INNER JOIN  " +
                    "	tb_cliente AS tc ON tc.id_accion = ta.id_accion INNER JOIN  " +
                    "	tb_tipo_accion ON ta.cod_tipo_accion = tb_tipo_accion.cod_tipo_accion  inner join" +
                    "	tb_area ON tb_area.cod_area =  ta.cod_area 	  " +
                    "	WHERE     (ta.cod_area = '"+ area.getCodArea() +"' )" +
                    "	and convert(char(10),ta.fecha_registro,103)  =  '"+ fecha +"'" +
                    "	and tb_tipo_accion.cod_tipo_accion = '" + codTipoAccion+ "'" +
                    "   and tc.num_inscrip = '"+ numInscri +"' " +
                    "	ORDER BY convert(char(10),ta.fecha_registro,103), tc.nombre 	" ;
        }
        Query query = em.createNativeQuery(queryString);

          listTemp =  query.setFirstResult(pagActual*pagTamanno)
                                        .setMaxResults(pagTamanno)
                                        .getResultList();
        lista = Utiles_Convertir.convertirToTableBeanBinding_Accion(listTemp);
        return lista;
    }
     public List<TableBeanBinding_RESUL> getListaResultados( String codarea,int pagActual, int pagTamanno ) {
        List<TableBeanBinding_RESUL> lista = null;
        List listTemp;
        String queryString = "";
        queryString = "SELECT     ID_RESULT, ID_ACCION, NUM_INSCRI, NOMBRE, COD_TIPO_A,  " +
                " convert(char(10),FECHA_REGI,103) as FECHA_REGI," +
                " convert(char(10),FECHA_RECE,103) as FECHA_RECE , " +
                " convert(char(10),FECHA_EJEC,103) as FECHA_EJE, " +
                " tb_tipo_ejecucion.descripcion ,tb_tipo_observacion.descripcion, LECT_MEDID " +
                " FROM         controlAcciones_DBF.dbo.RESUL"+codarea+" left JOIN tb_tipo_observacion" +
                " ON controlAcciones_DBF.dbo.RESUL"+codarea+".COD_TIPO_O = tb_tipo_observacion.cod_tipo_observacion left join " +
                " tb_tipo_ejecucion on controlAcciones_DBF.dbo.RESUL"+codarea+".COD_TIPO_E =  tb_tipo_ejecucion.cod_tipo_ejecucion" +
                " ORDER BY 1";

         Query query = em.createNativeQuery(queryString);

          listTemp =  query.setFirstResult(pagActual*pagTamanno)
                                        .setMaxResults(pagTamanno)
                                        .getResultList();

        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosResultados(listTemp);
        return lista;
    }
    
    public List<TableBeanBinding_DatosAcciones> getListaDatosAccionesByFecha( TbArea area, String fechaInicio, String fechaFin ) {
        List<TableBeanBinding_DatosAcciones> lista = null;
        List listTemp;
        String queryString = "exec sp_verAccionesRegistradas_Area '"+ area.getCodArea() +"','"+fechaInicio+"','" + fechaFin + "'";
        listTemp = em.createNativeQuery(queryString).getResultList();
        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosAcciones(listTemp);
        return lista;
    }

    public List<TableBeanBinding_DatosAdvanceMetas> getListaDatosAvanceMetas(  String fechaInicio, String fechaFin )throws SQLException
     {
//        String ban = "";
//        try {
//            Connection cn = this.dsComercial.getConnection();
//            CallableStatement cs = cn.prepareCall("{ call sp_Ver_avance_Meta( ?, ? ) }");
//            cs.setString(1, fechaInicio);
//            cs.setString(2, fechaFin );
//            cs.executeQuery();
//        } catch (SQLException ex) {
//            ban = ex.getMessage();
//            //Logger.getLogger( ValorizarAccionDAOBean.class.getName()).log(Level.SEVERE, null, ex);
//            throw ex;
//        }
//        return ban;

         List<TableBeanBinding_DatosAdvanceMetas> lista = null;
        List listTemp;
          String queryString = "exec sp_Ver_avance_Meta '"+fechaInicio+"','"+fechaFin+"'";

          listTemp = em.createNativeQuery(queryString).getResultList();
        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosAdvanceMetas(listTemp);
        return lista;
    }

    public List<TableBeanBinding_DatosAcciones> getListaDatosAccionesByFecha( TbArea area, String fecha, int pagActual, int pagTamanno ) {
        List<TableBeanBinding_DatosAcciones> lista = null;
        List listTemp;
        //String queryString = "exec sp_verCargaTrabajo_Area_Fecha '"+ area.getCodArea() +"','"+fecha+"'" ;
        String queryString =  "SELECT     cast (tc.id_accion as varchar)as id_accion , tc.num_inscrip, tc.nombre, " +
                " tc.direccion, tb_tipo_accion.descripcion, convert(char(10),ta.fecha_registro,103) as [Fecha Registro], " +
                " convert(char(10),ta.fecha_envio,103) as [Fecha Envio]  , Enviada =" +
                "      CASE          WHEN fecha_envio is  null THEN cast( 0 as bit)         " +
                "		 WHEN fecha_envio is not null  THEN cast( 1 as bit)         " +
                "      END, tb_tipo_accion.cod_tipo_accion" +
                " FROM          tb_accion ta INNER JOIN  " +
                " tb_cliente AS tc ON tc.id_accion = ta.id_accion INNER JOIN  " +
                " tb_tipo_accion ON ta.cod_tipo_accion = tb_tipo_accion.cod_tipo_accion  " +
                " WHERE     (ta.cod_area = '"+ area.getCodArea()+"' ) " +
                " and convert(char(10),ta.fecha_registro,103)  = '"+fecha+"'  " +
                " and ( ta.flag_anulada  = 0 or ta.flag_anulada  is null)" +
                " ORDER BY convert(char(10),ta.fecha_envio,103),tb_tipo_accion.cod_tipo_accion, tc.nombre  ";
        Query query = em.createNativeQuery(queryString);

          listTemp =  query.setFirstResult(pagActual*pagTamanno)
                                        .setMaxResults(pagTamanno)
                                        .getResultList();
        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosAcciones(listTemp);
        return lista;
    }

    
    

    public List<TableBeanBinding_DatosAcciones> getListaDatosAccionesByFecha( TbTipoAccionClasificacionAccionArea tipoAccion, String fecha ) {
        List<TableBeanBinding_DatosAcciones> lista = null;
        List listTemp;
          String queryString = "SELECT     cast (tc.id_accion as varchar), tc.num_inscrip, tb_datos_cliente.nombre, tb_datos_cliente.direccion, tb_tipo_accion.descripcion, convert(char(10),ta.fecha_registro,103) as [Fecha Registro], convert(char(10),ta.fecha_envio,103) as [Fecha Envio] " +
                            "FROM         tb_datos_cliente INNER JOIN " +
                            "tb_cliente AS tc ON tb_datos_cliente.num_inscrip = tc.num_inscrip INNER JOIN " +
                            "tb_accion AS ta ON tc.id_accion = ta.id_accion INNER JOIN " +
                            "tb_tipo_accion ON ta.cod_tipo_accion = tb_tipo_accion.cod_tipo_accion " +
                            "WHERE     (ta.cod_area = '" + tipoAccion.getTbArea().getCodArea() + "') AND (ta.cod_tipo_accion = " + tipoAccion.getTbTipoAccion().getCodTipoAccion() + ") " +
                            "AND convert(char(10),ta.fecha_registro,103) ='" + fecha + "'";

          listTemp = em.createNativeQuery(queryString)
                .getResultList();
        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosAcciones(listTemp);
        return lista;
    }

   

    public List<TableBeanBinding_DatosLecturas> getListaLecturas( String fecha, int pagActual, int pagTamanno ) {
        List<TableBeanBinding_DatosLecturas> lista = null;
        List listTemp;
        String queryString = "";
        queryString = "SELECT     id_lectura, inscrinro,nombre,  codtipoaccion, medcodnro," +
                " convert(char(10),medfacfec,103) as medfacfec, convert(char(10),medfecha,103) as medfecha, " +
                " lecmed, lectant,convert(char(10),fecant,103) as fecant, promedio," +
                " convert(char(10),fechactu,103) as fechactu , log_user, flag_registrada " +
                " FROM         tb_lectura1" +
                " WHERE     (CONVERT(char(10), medfacfec, 103) = '"+fecha+"')";

         Query query = em.createNativeQuery(queryString);

          listTemp =  query.setFirstResult(pagActual*pagTamanno)
                                        .setMaxResults(pagTamanno)
                                        .getResultList();

        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosLecturas(listTemp);
        return lista;
    }

    public List<TableBeanBinding_DatosDetalleTipoAccion> getListaDatosTipoAccion( TbTipoAccion tbTipoAccion  ) {
        List<TableBeanBinding_DatosDetalleTipoAccion> lista = null;
        List listTemp;
        String queryString = "";
        if( tbTipoAccion == null ){
            queryString = "SELECT     tb_tipo_accion.cod_tipo_accion, tb_tipo_accion.descripcion, tb_tipo_accion.costo, tb_tipo_accion.tiempo_rpta_limite, tb_tipo_accion.flag_req_detalle, " +
                  " tb_tipo_accion.cod_cat_accion, tb_categoria_accion.descripcion AS Expr1 " +
                  " FROM         tb_tipo_accion INNER JOIN " +
                  " tb_categoria_accion ON tb_tipo_accion.cod_cat_accion = tb_categoria_accion.cod_cat_accion ";

        }else{
            queryString = "SELECT     tb_tipo_accion.cod_tipo_accion, tb_tipo_accion.descripcion, tb_tipo_accion.costo, tb_tipo_accion.tiempo_rpta_limite, tb_tipo_accion.flag_req_detalle, " +
                  " tb_tipo_accion.cod_cat_accion, tb_categoria_accion.descripcion AS Expr1 " +
                  " FROM         tb_tipo_accion INNER JOIN " +
                  " tb_categoria_accion ON tb_tipo_accion.cod_cat_accion = tb_categoria_accion.cod_cat_accion " +
                  " where tb_tipo_accion.cod_tipo_accion = " + tbTipoAccion.getCodTipoAccion();
        }
        
          listTemp = em.createNativeQuery(queryString)
                .getResultList();
        lista = Utiles_Convertir.convertirToTableBeanBinding_DatosTipoAccion(listTemp);
        return lista;
    }

    @PersistenceContext(unitName = "ControlAccionesComercial_EAR-ejbPU")
    private EntityManager em;

    
//    @Resource(name="jdbc/Comercial")
//    DataSource dsComercial;
}
